package com.utils.gzh;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import com.alibaba.fastjson.JSONObject;
import com.utils.redis.RedisUtil;
import com.ylt.controller.WeChatController;

import io.netty.util.internal.logging.InternalLogger;
import io.netty.util.internal.logging.Log4JLoggerFactory;

/**
* @author ganzhenlin
* @version date：221年2月28日
* @description ：
*/
public class WeChatTask {
	
	InternalLogger log = Log4JLoggerFactory.getInstance(WeChatTask.class);
    /**
     * @Description: 任务执行体
     * @param @throws Exception
     */
    public void getToken_getTicket(RedisUtil redisUtil) throws Exception {
         Map<String, String> params = new HashMap<String, String>();
         //获取token执行体
         params.put("grant_type", "client_credential");
         String appid="wxcb6b51a7bd14fc2b";
         params.put("appid", appid);
         params.put("secret", "91a1e3321af131e898f087def58cd979");
         String jstoken = sendPost("https://api.weixin.qq.com/cgi-bin/token", params);
         JSONObject jo=(JSONObject)JSONObject.parse(jstoken);
         String access_token = jo.getString("access_token"); // 获取到token并赋值保存
         redisUtil.setEx(appid+"_access_token", access_token, 115, TimeUnit.MINUTES);

         //获取jsticket的执行体
         params.clear();
         params.put("access_token", access_token);
         params.put("type", "jsapi");
         String jsticket = sendPost("https://api.weixin.qq.com/cgi-bin/ticket/getticket", params);
         String jsapi_ticket = ((JSONObject)JSONObject.parse(jsticket)).getString("ticket");
         redisUtil.setEx(appid+"_jsapi_ticket", jsapi_ticket, 115, TimeUnit.HOURS);
    }
    
    public  String sendPost(String url, Map<String, ?> paramMap) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";

        String param = "";
        Iterator<String> it = paramMap.keySet().iterator();

        while (it.hasNext()) {
            String key = it.next();
            param += key + "=" + paramMap.get(key) + "&";
        }

        try {
            URL realUrl = new URL(url+"?"+param);
            // 打开和URL之间的连接
            URLConnection conn = realUrl.openConnection();
            // 设置通用的请求属性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 发送POST请求必须设置如下两行
			/*
			 * conn.setDoOutput(true); conn.setDoInput(true);
			 */
            conn.connect();
            // 获取URLConnection对象对应的输出流
            //out = new PrintWriter(conn.getOutputStream());
            // 发送请求参数
            //out.print(param);
            // flush输出流的缓冲
            //out.flush();
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            log.debug("line====="+line);
        } catch (Exception e) {
            System.out.println(e);
            log.debug(e);
        }
        //使用finally块来关闭输出流、输入流
        finally {
            try {
            	if (in != null) {
                    in.close();
                }
                if (out != null) {
                    out.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
                log.debug(ex);
            }
        }
        return result;
    }
}